use master
go
drop database WarehouseManagement
go

--Create database WareHouse
create database WarehouseManagement
on(name='WareHouse_data', filename='F:\WarehouseManagement.mdf')
log on(name='WareHouse_Log', filename='F:\WarehouseManagement.ldf')
go
use WarehouseManagement
go

create table [GroupRole]
(
	GroupRoleId varchar(50) primary key not null,
	GroupRoleName nvarchar(100) not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30)

)
GO

create table [Role]
(
	RoleId varchar(50) Primary Key not null,
	RoleName nvarchar(100) not null,
	GroupRoleId varchar(50) not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30)

	CONSTRAINT Fk_GroupRole_Role FOREIGN KEY(GroupRoleId)
	REFERENCES [GroupRole](GroupRoleId)
)
GO

create table GroupUser
(
	GroupUserId int identity(1,1) not null Primary Key,
	GroupUserName nvarchar(100) not null,
	GroupUserDescription nvarchar(100),
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30)
)
GO
CREATE TABLE Detail_GroupUserRole
(
	GroupUserId INT not null,
	RoleId varchar(50) not null,
	Permit bit 
	CONSTRAINT PK_DETAIL_GROUPUSER_ROLE PRIMARY KEY(GroupUserId,RoleId),
	CONSTRAINT FK_DETAIL_GROUPUSER_ROLE_GROUPUSER FOREIGN KEY(GroupUserId)
	REFERENCES GroupUser(GroupUserId),
	CONSTRAINT FK_DETAIL_GROUPUSER_ROLE_ROLE FOREIGN KEY(RoleId)
	REFERENCES [Role](RoleId)
)
GO
create table UserAccount
(
	UserName VARCHAR(30) NOT NULL PRIMARY KEY ,
	[Password] VARCHAR(32) NOT NULL,
	FirstName NVARCHAR(50) NOT NULL,
	MiddleName NVARCHAR(50) NOT NULL,
	LastName NVARCHAR(50) NOT NULL,
	FullName NVARCHAR(150),
	Dob DATETIME NOT NULL,
	Email VARCHAR(100) NOT NULL,
	IdCard VARCHAR(20) NOT NULL,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	IsAdmin BIT NOT NULL,
	MobilePhone VARCHAR(20),
	HomePhone VARCHAR(20),
	GroupUserId INT NOT NULL,
	EmployerId varchar(20)
	CONSTRAINT FK_USERACCOUNT_GROUPUSER FOREIGN KEY(GroupUserId)
	REFERENCES GROUPUSER(GroupUserId)
	
)
GO
--Create table Import Company
create table Company
(
	CompanyId int identity(1,1) primary key,
	CompanyName nvarchar(200) not null,
	CompanyAddress nvarchar(200)not null,
	Phone varchar(11),
	Mobile varchar(11),
	Fax varchar(50),
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go
--Create table Agency
create table Agency
(
	AgencyId int identity(1,1) primary key,
	AgencyName nvarchar(200) not null,
	AgencyAddress nvarchar(200)not null,
	Phone varchar(11),
	Mobile varchar(11),
	IsCurrent bit not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go
--Create table Customer
create table Customer
(
	CustomerId int identity(1,1) not null primary key,
	FirstName nvarchar(50) not null,
	LastName nvarchar(50) not null,
	MiddleName nvarchar(50) not null,
	FullName nvarchar(200) ,
	Dob datetime,
	IdCard varchar(11),
	[Address] nvarchar(200),
	Phone varchar(11),
	Mobile varchar(11),
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go

create table CustomerPaidHistory
(
	CustomerPaidHistoryId int identity(1,1) primary key,
	CustomerId int not null,
	Amount decimal(18,2) not null,
	IsEnd bit,
	IsHaveItems bit,
	DatePaid datetime not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	constraint Fk_CustomerPaidHistory_Customer foreign key(CustomerId)
	references Customer(CustomerId)

)

go

--Create table CustomerDebtRate
create table CustomerDebtRate
(
	CustomerId int not null,
	[Year] int not null,
	Month1 float not null,
	Month2 float not null,
	Month3 float not null,
	Month4 float not null,
	Month5 float not null,
	Month6 float not null,
	Month7 float not null,
	Month8 float not null,
	Month9 float not null,
	Month10 float not null,
	Month11 float not null,
	Month12 float not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime

	constraint Pk_CustomerDebtRate primary key(CustomerId,[Year]),
	constraint Fk_CustomerDebtRate_Customer foreign key(CustomerId)
	references Customer(CustomerId)
)
go

--Create table Department
create table Department
(
	DepartmentId int identity(1,1) primary key not null,
	DepartmentName nvarchar(100) not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go
--Create table Employer
create table Employer
(
	EmployerId int identity(1,1) not null primary key,
	FirstName nvarchar(50) not null,
	LastName nvarchar(50) not null,
	MiddleName nvarchar(50) not null,
	Dob datetime,
	IdCard varchar(11),
	[Address] nvarchar(200),
	Phone varchar(11),
	Mobile varchar(11),
	DateWork datetime not null,
	DepartmentId int,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
	constraint FK_Emp_Department foreign key(DepartmentId)
	references Department(DepartmentId)
)
go
--create table WareHouseType
create table WareHouseType
(
	WareHouseTypeId int identity(1,1) primary key not null,
	WareHouseTypeName nvarchar(100),
	WareHouseTypeDescription nvarchar(200),
		DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go
--create table WareHouse
create table WareHouse
(
	WareHouseId int identity(1,1) not null primary key,
	WareHouseName nvarchar(100) not null,
	WareHouseDescription nvarchar(200),
	WareHouseTypeId int not null,
	IsSale bit not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
	constraint FK_WareHouse_WareHouseType foreign key(WareHouseTypeId)
	references WareHouseType(WareHouseTypeId)
)
go
--create table Unit
create table Unit
(
	UnitId int identity(1,1) primary key,
	UnitName nvarchar(100) not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
--create table ItemType
create table ItemType
(
	ItemTypeId int identity(1,1) primary key,
	ItemTypeName nvarchar(100) not null,
	ItemTypeDescription nvarchar(200),
		DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
)
go
--create table Item
create table Item
(
	ItemId int identity(1,1) primary key ,
	ItemName nvarchar(100) not null,
	ItemShortName varchar(50),
	ItemTypeId int not null,
	UnitId int not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime
	constraint FK_Item_ItemType foreign key(ItemTypeId)
	references ItemType(ItemTypeId),
	constraint FK_Item_Unit foreign key(UnitId)
	references Unit(UnitId)
)
go
-- create table ItemPrice
create table ItemPrice
(
	ItemPriceId int identity(1,1)primary key,
	ItemId int not null,
	IsCurrentPrice bit not null,
	Value decimal(18,2) not null,
	EffectiveFromDate datetime not null,
	EffectiveToDate datetime,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30)
	constraint FK_ItemPrice_Item foreign key(ItemId)
	references Item(ItemId)
)
go
--create table DetailItemWareHouse
create table DetailItemWareHouse
(
	DetailItemWareHouseId int identity(1,1) primary key,
	ItemId int not null,
	WareHouseId int not null,
	Quantity int not null

	constraint FK_DetailItemWareHouse_Item foreign key(ItemId)
	references Item(ItemId),
	constraint FK_DetailItemWareHouse_WareHouse foreign key(WareHouseId)
	references WareHouse(WareHouseId)
	


)
go

--create table DetailItemWareHouse
create table Export
(
	ExportId varchar(10) primary key not null,
	IsDebt bit not null,
	IsPayDirect bit not null,
	CustomerId int not null,
	DateCreate datetime not null,
	WareHouseId int not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	constraint Fk_Export_Customer foreign key(CustomerId)
	references Customer(CustomerId),
		constraint Fk_Export_WareHouse foreign key(WareHouseId)
	references WareHouse(WareHouseId),

			constraint Fk_Export_UserAccount foreign key(UserCreate)
	references UserAccount(UserName)
)
go

--create table DetailItemWareHouse
create table ExportHistory
(
	DateLog date not null,
	WareHouseId int not null,
	ItemId int not null,
	QuantityExist int not null,

	constraint PK_ExportHistory primary key (DateLog,WareHouseId,ItemId),
	constraint Fk_ExportHistory_Item foreign key(ItemId)
	references Item(ItemId),
	constraint Fk_ExportHistory_WareHouse foreign key(WareHouseId)
	references WareHouse(WareHouseId)
)
go
create table DetailCustomerPaidHistory
(
	DetailCustomerPaidHistoryId int identity(1,1) primary key,
	ExportId varchar(10) not null,
	CustomerPaidHistoryId int not null,
	ItemId int not null,
	Quantity int not null,
	ItemName nvarchar(100) not null,
	Price decimal (18,2)not null,
	TaxRate decimal(18,2)not null ,
	TotalWithNotTax decimal(18,2) not null,
	TotalWithTax decimal(18,2) not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	constraint Fk_DetailCustomerPaidHistory_CustomerPaidHistory foreign key(CustomerPaidHistoryId)
	references CustomerPaidHistory(CustomerPaidHistoryId)

)

go
--CThoadonxuat
create table ExportDetail
(
	ExportId varchar(10) not null,
	ItemId int not null,
	ItemPriceId int not null,
	Quantity int not null,
	constraint PK_EXPORTDETAIL primary key(ExportId,ItemId),
	constraint FK_EXPORTDETAIL_ITEM foreign key(ItemId)
	references Item(ItemId),
	constraint FK_EXPORTDETAIL_EXPORT foreign key(ExportId)
	references Export(ExportId),
	constraint FK_EXPORTDETAIL_ItemPrice foreign key(ItemPriceId)
	references ItemPrice(ItemPriceId)
)
go
--create table DetailItemWareHouse
create table Import
(
	ImportId varchar(10) primary key not null,
	WareHouseId int not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	constraint Fk_Import_WareHouse foreign key(WareHouseId)
	references WareHouse(WareHouseId),
	constraint Fk_Import_UserAccount foreign key(UserCreate)
	references UserAccount(UserName)

)
go
--
create table ImportDetail
(
	ImportId varchar(10) not null,
	ItemId int not null,
	Price  decimal(18,2) not null,
	Quantity int not null,
	constraint PK_ImportDETAIL primary key(ImportId,ItemId),
	constraint FK_ImportETAIL_ITEM foreign key(ItemId)
	references Item(ItemId),
	constraint FK_ImportDETAIL_EXPORT foreign key(ImportId)
	references Import(ImportId)
)
go

--create table DetailItemWareHouse
create table [Order]
(
	OrderId varchar(10) primary key not null,
	CompanyId int not null,
	IsFinish bit not null,
	DateCreate datetime not null,
	LastUpdate datetime,
	UpdateBy varchar(30),
	UserCreate varchar(30),
	constraint Fk_Order_Company foreign key(CompanyId)
	references Company(CompanyId),
	constraint Fk_Order_UserAccount foreign key(UserCreate)
	references UserAccount(UserName)

)
go
--
create table OrderDetail
(
	OrderId varchar(10) not null,
	ItemId int not null,
	Price  decimal(18,2) not null,
	Quantity int not null,
	constraint PK_OrderDetail primary key(OrderId,ItemId),
	constraint FK_OrderDetail_ITEM foreign key(ItemId)
	references Item(ItemId),
	constraint FK_OrderDetail_Order foreign key(OrderId)
	references [Order](OrderId),
)
go


--GROUP ROLE
CREATE  PROC INSERTGROUPROLE(@GroupRoleId VARCHAR(50),
           @GROUPROLENAME nvarchar(100)
           ,@USERCREATE varchar(30))
         
        
AS
	BEGIN
		INSERT INTO GroupRole
           (
		   GroupRoleId,
           GroupRoleName
           ,UserCreate
           ,DateCreate
           ,UpdateBy
           ,LastUpdate)
     VALUES
           (
		   @GroupRoleId,
           @GROUPROLENAME
           ,@USERCREATE
           ,GETDATE()
           ,@USERCREATE
           ,GETDATE())
	END
GO


CREATE PROC INSERTROLE(@RoleId varchar(50)
           ,@ROLENAME nvarchar(100)
           ,@GROUPRoleId VARCHAR(50)
           ,@USERCREATE varchar(30))
         
        
AS
	BEGIN
		INSERT INTO [Role]
           ([RoleId]
           ,RoleName
           ,GroupRoleId
           ,[USERCREATE]
           ,[DATECREATE]
           ,UpdateBy
           ,[LASTUPDATE])
     VALUES
           (@RoleId
           ,@ROLENAME
           ,@GROUPRoleId
           ,@USERCREATE
           ,GETDATE()
           ,@USERCREATE
           ,GETDATE())
	END
GO


--DETAIL_GROUPUSER_ROLE
CREATE PROC INSERTDETAILGROUPUSERROLE(@GroupUserId VARCHAR (50)
           ,@RoleId varchar(50),@PERMIT BIT)
AS
	BEGIN
		INSERT INTO Detail_GroupUserRole
           ([GroupUserId]
           ,[RoleId],PERMIT)
     VALUES
           (@GroupUserId 
           ,@RoleId
		   ,@PERMIT)
	END
GO

--GROUPUSER
CREATE PROC INSERTGROUPUSER(@GROUPUSERNAME nvarchar(100)
           ,@GROUPUSERDESCRIPTION nvarchar(100)
           ,@USERCREATE varchar(30))
AS
	BEGIN
		INSERT INTO [GROUPUSER]
           ([GROUPUSERNAME]
           ,[GROUPUSERDESCRIPTION]
           ,[USERCREATE]
           ,[DATECREATE]
           ,UpdateBy
           ,[LASTUPDATE])
     VALUES
           (@GROUPUSERNAME
           ,@GROUPUSERDESCRIPTION
           ,@USERCREATE
           ,GETDATE()
           ,@USERCREATE
           ,GETDATE())

	INSERT INTO Detail_GroupUserRole( RoleId, GroupUserId, PERMIT )
SELECT  [ROLE].RoleId, (SELECT TOP 1 GroupUserId FROM GROUPUSER ORDER BY GroupUserId DESC), 0
FROM    [ROLE]
	END
GO



EXEC INSERTGROUPROLE '1',	N'Quản lý đại lý','DEFAULT'
EXEC INSERTGROUPROLE '2',	N'Quản lý khách hàng','DEFAULT'
EXEC INSERTGROUPROLE '3',	N'Quản lý công nợ','DEFAULT'
EXEC INSERTGROUPROLE '4',	N'Quản lý thiết lập công nợ','DEFAULT'
EXEC INSERTGROUPROLE '5',	N'Quản lý loại sản phẩm','DEFAULT'
EXEC INSERTGROUPROLE '6',	N'Quản lý sản phẩm','DEFAULT'
EXEC INSERTGROUPROLE '7',	N'Quản lý giá sản phẩm','DEFAULT'
EXEC INSERTGROUPROLE '8',	N'Quản lý loại kho','DEFAULT'
EXEC INSERTGROUPROLE '9',	N'Quản lý kho','DEFAULT'
EXEC INSERTGROUPROLE '10',	N'Quản lý nhập kho','DEFAULT'
EXEC INSERTGROUPROLE '11',	N'Quản lý xuất kho','DEFAULT'
EXEC INSERTGROUPROLE '12',	N'Quản lý phòng ban','DEFAULT'
EXEC INSERTGROUPROLE '13',	N'Quản lý nhân viên','DEFAULT'
EXEC INSERTGROUPROLE '14',	N'Quản lý đơn vị tính','DEFAULT'
EXEC INSERTGROUPROLE '15',	N'Quản lý báo cáo','DEFAULT'
EXEC INSERTGROUPROLE '16',	N'Quản lý nhóm quyền','DEFAULT'
EXEC INSERTGROUPROLE '17',	N'Quản lý quyền hạn','DEFAULT'
EXEC INSERTGROUPROLE '18',	N'Quản lý người dùng','DEFAULT'
EXEC INSERTGROUPROLE '19',	N'Quản lý cài đặt','DEFAULT'

EXEC INSERTGROUPROLE '20',	N'Quản lý nhóm người dùng','DEFAULT'
EXEC INSERTGROUPROLE '21',	N'Quản lý thông tin đối tác','DEFAULT'
EXEC INSERTGROUPROLE '22',	N'Quản lý thông tin đặt hàng','DEFAULT'


go
-- INSERT ROLE

-- 1. Agency    
EXEC INSERTROLE 'agency_add',N'Thêm đại lý',1,'DEFAULT'
EXEC INSERTROLE 'agency_edit',N'Cập nhật đại lý',1,'DEFAULT'
EXEC INSERTROLE 'agency_delete',N'Xóa đại lý',1,'DEFAULT'
EXEC INSERTROLE 'agency_read',N'Xem thông tin đại lý',1,'DEFAULT'

-- 2. Customer
EXEC INSERTROLE 'customer_add',N'Thêm khách hàng',2,'DEFAULT'
EXEC INSERTROLE 'customer_edit',N'Cập nhật khách hàng',2,'DEFAULT'
EXEC INSERTROLE 'customer_delete',N'Xóa khách hàng',2,'DEFAULT'
EXEC INSERTROLE 'customer_read',N'Xem thông tin khách hàng',2,'DEFAULT'

-- 3. Customer Debt
EXEC INSERTROLE 'managedebt_addmore',N'Trả thêm tiền',3,'DEFAULT'
EXEC INSERTROLE 'managedebt_finish',N'Tất sổ',3,'DEFAULT'
EXEC INSERTROLE 'managedebt_print',N'In công nợ',3,'DEFAULT'
EXEC INSERTROLE 'managedebt_read',N'Xem công nợ',3,'DEFAULT'

-- 4. Customer Debt Rate Setting
EXEC INSERTROLE 'customerdebtrate_add',N'Thêm lãi suất công nợ cho khách hàng',4,'DEFAULT'
EXEC INSERTROLE 'customerdebtrate_edit',N'Cập nhật lãi suất công nợ cho khách hàng',4,'DEFAULT'
EXEC INSERTROLE 'customerdebtrate_delete',N'Xóa lãi suất công nợ cho khách hàng',4,'DEFAULT'
EXEC INSERTROLE 'customerdebtrate_read',N'Xem thông tin lãi suất công nợ cho khách hàng',4,'DEFAULT'

-- 5. Item Type     
EXEC INSERTROLE 'itemtype_add',N'Thêm loại sản phẩm',5,'DEFAULT'
EXEC INSERTROLE 'itemtype_edit',N'Cập nhật loại sản phẩm',5,'DEFAULT'
EXEC INSERTROLE 'itemtype_delete',N'Xóa loại sản phẩm',5,'DEFAULT'
EXEC INSERTROLE 'itemtype_read',N'Xem thông tin loại sản phẩm',5,'DEFAULT'

-- 6. Item     
EXEC INSERTROLE 'item_add',N'Thêm sản phẩm',6,'DEFAULT'
EXEC INSERTROLE 'item_edit',N'Cập nhật sản phẩm',6,'DEFAULT'
EXEC INSERTROLE 'item_delete',N'Xóa sản phẩm',6,'DEFAULT'
EXEC INSERTROLE 'item_read',N'Xem thông tin sản phẩm',6,'DEFAULT'

-- 7. Item Price
EXEC INSERTROLE 'itemprice_add',N'Thêm giá cho sản phẩm',7,'DEFAULT'
EXEC INSERTROLE 'itemprice_edit',N'Cập nhật giá cho sản phẩm',7,'DEFAULT'
EXEC INSERTROLE 'itemprice_delete',N'Xóa giá sản phẩm',7,'DEFAULT'
EXEC INSERTROLE 'itemprice_read',N'Xem thông tin giá sản phẩm',7,'DEFAULT'

-- 8. Warehouse Type
EXEC INSERTROLE 'warehousetype_add',N'Thêm loại kho',8,'DEFAULT'
EXEC INSERTROLE 'warehousetype_edit',N'Cập nhật loại kho',8,'DEFAULT'
EXEC INSERTROLE 'warehousetype_delete',N'Xóa loại kho',8,'DEFAULT'
EXEC INSERTROLE 'warehousetype_read',N'Xem thông tin loại kho',8,'DEFAULT'

-- 9. Warehouse
EXEC INSERTROLE 'warehouse_add',N'Thêm kho',9,'DEFAULT'
EXEC INSERTROLE 'warehouse_edit',N'Cập nhật kho',9,'DEFAULT'
EXEC INSERTROLE 'warehouse_delete',N'Xóa kho',9,'DEFAULT'
EXEC INSERTROLE 'warehouse_read',N'Xem thông tin kho',9,'DEFAULT'
EXEC INSERTROLE 'warehouse_viewdetail',N'Xem chi tiết tồn kho',9,'DEFAULT'


-- 10. Export Manage
EXEC INSERTROLE 'export_new',N'Quyền xuất kho',11,'DEFAULT'
EXEC INSERTROLE 'exporthistory_editquantity',N'Chỉnh sữa phiếu xuất kho',11,'DEFAULT'
EXEC INSERTROLE 'exporthistory_printagain',N'In lại phiếu xuất kho',11,'DEFAULT'
EXEC INSERTROLE 'exporthistory_read',N'Xem lại các phiếu xuất kho đã xuất',11,'DEFAULT'

-- 11. Import Manage
EXEC INSERTROLE 'import_new',N'Quyền lập phiếu nhập kho',10,'DEFAULT'
EXEC INSERTROLE 'import_read',N'Quyền nhập kho',10,'DEFAULT'
EXEC INSERTROLE 'importhistory_editquantity',N'Chỉnh sữa hóa đơn nhập kho',10,'DEFAULT'
EXEC INSERTROLE 'importhistory_printagain',N'In lại hóa đơn nhập kho',10,'DEFAULT'
EXEC INSERTROLE 'importhistory_read',N'Xem lại các phiếu nhập kho đã nhập',10,'DEFAULT'

-- 12. Department
EXEC INSERTROLE 'department_add',N'Thêm phòng ban',12,'DEFAULT'
EXEC INSERTROLE 'department_edit',N'Cập nhật phòng ban',12,'DEFAULT'
EXEC INSERTROLE 'department_delete',N'Xóa phòng ban',12,'DEFAULT'
EXEC INSERTROLE 'department_read',N'Xem thông tin phòng ban',12,'DEFAULT'

-- 13. Employer
EXEC INSERTROLE 'emp_add',N'Thêm nhân viên',13,'DEFAULT'
EXEC INSERTROLE 'emp_edit',N'Cập nhật nhân viên',13,'DEFAULT'
EXEC INSERTROLE 'emp_delete',N'Xóa nhân viên',13,'DEFAULT'
EXEC INSERTROLE 'emp_read',N'Xem thông tin nhân viên',13,'DEFAULT'

-- 14. Unit
EXEC INSERTROLE 'unit_add',N'Thêm đơn vị',14,'DEFAULT'
EXEC INSERTROLE 'unit_edit',N'Cập nhật đơn vị',14,'DEFAULT'
EXEC INSERTROLE 'unit_delete',N'Xóa đơn vị',14,'DEFAULT'
EXEC INSERTROLE 'unit_read',N'Xem thông tin đơn vị',14,'DEFAULT'

-- 15. Report
EXEC INSERTROLE 'report_existendofday',N'Báo cáo tồn kho cuối ngày',15,'DEFAULT'

-- 16. Group Role
EXEC INSERTROLE 'grouprole_add',N'Thêm nhóm quyền',16,'DEFAULT'
EXEC INSERTROLE 'grouprole_edit',N'Cập nhật nhóm quyền',16,'DEFAULT'
EXEC INSERTROLE 'grouprole_delete',N'Xóa nhóm quyền',16,'DEFAULT'
EXEC INSERTROLE 'grouprole_read',N'Xem thông tin nhóm quyền',16,'DEFAULT	'

-- 17. Role
EXEC INSERTROLE 'role_add',N'Thêm quyền',17,'DEFAULT'
EXEC INSERTROLE 'role_edit',N'Cập nhật quyền',17,'DEFAULT'
EXEC INSERTROLE 'role_delete',N'Xóa quyền',17,'DEFAULT'
EXEC INSERTROLE 'role_read',N'Xem thông tin quyền',17,'DEFAULT'

-- 18. User
EXEC INSERTROLE 'user_add',N'Thêm người dùng',18,'DEFAULT'
EXEC INSERTROLE 'user_edit',N'Cập nhật người dùng',18,'DEFAULT'
EXEC INSERTROLE 'user_delete',N'Xóa người dùng',18,'DEFAULT'
EXEC INSERTROLE 'user_read',N'Xem thông tin người dùng',18,'DEFAULT'
EXEC INSERTROLE 'change_pass',N'Thay đổi password',18,'DEFAULT'
EXEC INSERTROLE 'reset_pass',N'Đặt lại pass mới',18,'DEFAULT'

-- 19. Setting
EXEC INSERTROLE 'permission',N'Cấp quyền sử dụng',19,'DEFAULT'
EXEC INSERTROLE 'shortcut_setting',N'Cài đặt phím tắt',19,'DEFAULT'

-- 20. Group User
EXEC INSERTROLE 'groupuser_add',N'Thêm nhóm người dùng',20,'DEFAULT'
EXEC INSERTROLE 'groupuser_edit',N'Cập nhật nhóm người dùng',20,'DEFAULT'
EXEC INSERTROLE 'groupuser_delete',N'Xóa nhóm người dùng',20,'DEFAULT'
EXEC INSERTROLE 'groupuser_read',N'Xem thông tin nhóm người dùng',20,'DEFAULT'

-- 21. Company    
EXEC INSERTROLE 'company_add',N'Thêm đại đối tác',21,'DEFAULT'
EXEC INSERTROLE 'company_edit',N'Cập nhật đối tác',21,'DEFAULT'
EXEC INSERTROLE 'company_delete',N'Xóa đối tác',21,'DEFAULT'
EXEC INSERTROLE 'company_read',N'Xem thông tin đối tác',21,'DEFAULT'


-- 22. Order Manage
EXEC INSERTROLE 'order_new',N'Quyền lập đơn đặt hàng mới',22,'DEFAULT'
EXEC INSERTROLE 'order_read',N'Quyền truy cập đơn đặt hàng',22,'DEFAULT'
EXEC INSERTROLE 'orderhistory_updatestatus',N'Thay đổi trạng thái đơn hàng',22,'DEFAULT'
EXEC INSERTROLE 'orderhistory_printagain',N'In lại đơn hàng đã đặt',22,'DEFAULT'
EXEC INSERTROLE 'orderhistory_read',N'Xem lại các đơn hàng đã đặt',22,'DEFAULT'
GO



-------insert basic data 
insert into GroupUser(GroupUserName,GroupUserDescription, DateCreate,LastUpdate,UpdateBy,UserCreate)
			   values('Administrators',N'Group này chứa những tài khoản có quyền quan lý',getdate(),getdate(),'','')

exec INSERTGROUPUSER  N'Users',N'Nhóm tài khoản dành cho nhân viên','Default'
------------------ INSERT ROLE FOR GROUP ADMIN

-- 1. Agency    
EXEC INSERTDETAILGROUPUSERROLE '1','agency_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','agency_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','agency_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','agency_read',1

-- 2. Customer
EXEC INSERTDETAILGROUPUSERROLE '1','customer_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','customer_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','customer_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','customer_read',1

-- 3. Customer Debt
EXEC INSERTDETAILGROUPUSERROLE '1','managedebt_addmore',1
EXEC INSERTDETAILGROUPUSERROLE '1','managedebt_finish',1
EXEC INSERTDETAILGROUPUSERROLE '1','managedebt_print',1
EXEC INSERTDETAILGROUPUSERROLE '1','managedebt_read',1

-- 4. Customer Debt Rate Setting
EXEC INSERTDETAILGROUPUSERROLE '1','customerdebtrate_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','customerdebtrate_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','customerdebtrate_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','customerdebtrate_read',1

-- 5. Item Type     
EXEC INSERTDETAILGROUPUSERROLE '1','itemtype_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemtype_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemtype_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemtype_read',1

-- 6. Item     
EXEC INSERTDETAILGROUPUSERROLE '1','item_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','item_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','item_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','item_read',1

-- 7. Item Price
EXEC INSERTDETAILGROUPUSERROLE '1','itemprice_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemprice_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemprice_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','itemprice_read',1

-- 8. Warehouse Type
EXEC INSERTDETAILGROUPUSERROLE '1','warehousetype_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehousetype_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehousetype_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehousetype_read',1

-- 9. Warehouse
EXEC INSERTDETAILGROUPUSERROLE '1','warehouse_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehouse_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehouse_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehouse_read',1
EXEC INSERTDETAILGROUPUSERROLE '1','warehouse_viewdetail',1


-- 10. Export Manage
EXEC INSERTDETAILGROUPUSERROLE '1','export_new',1
EXEC INSERTDETAILGROUPUSERROLE '1','exporthistory_editquantity',1
EXEC INSERTDETAILGROUPUSERROLE '1','exporthistory_printagain',1
EXEC INSERTDETAILGROUPUSERROLE '1','exporthistory_read',1

-- 11. Import Manage
EXEC INSERTDETAILGROUPUSERROLE '1','import_new',1
EXEC INSERTDETAILGROUPUSERROLE '1','import_read',1
EXEC INSERTDETAILGROUPUSERROLE '1','importhistory_editquantity',1
EXEC INSERTDETAILGROUPUSERROLE '1','importhistory_printagain',1
EXEC INSERTDETAILGROUPUSERROLE '1','importhistory_read',1

-- 12. Department
EXEC INSERTDETAILGROUPUSERROLE '1','department_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','department_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','department_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','department_read',1

-- 13. Employer
EXEC INSERTDETAILGROUPUSERROLE '1','emp_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','emp_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','emp_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','emp_read',1

-- 14. Unit
EXEC INSERTDETAILGROUPUSERROLE '1','unit_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','unit_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','unit_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','unit_read',1

-- 15. Report
EXEC INSERTDETAILGROUPUSERROLE '1','report_existendofday',1

-- 16. Group Role
EXEC INSERTDETAILGROUPUSERROLE '1','grouprole_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','grouprole_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','grouprole_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','grouprole_read',1

-- 17. Role
EXEC INSERTDETAILGROUPUSERROLE '1','role_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','role_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','role_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','role_read',1

-- 18. User
EXEC INSERTDETAILGROUPUSERROLE '1','user_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','user_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','user_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','user_read',1
EXEC INSERTDETAILGROUPUSERROLE '1','change_pass',1
EXEC INSERTDETAILGROUPUSERROLE '1','reset_pass',1

-- 19. Setting
EXEC INSERTDETAILGROUPUSERROLE '1','permission',1
EXEC INSERTDETAILGROUPUSERROLE '1','shortcut_setting',1

-- 20. Group User
EXEC INSERTDETAILGROUPUSERROLE '1','groupuser_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','groupuser_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','groupuser_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','groupuser_read',1

-- 21. Company    
EXEC INSERTDETAILGROUPUSERROLE '1','company_add',1
EXEC INSERTDETAILGROUPUSERROLE '1','company_edit',1
EXEC INSERTDETAILGROUPUSERROLE '1','company_delete',1
EXEC INSERTDETAILGROUPUSERROLE '1','company_read',1


-- 22. Order Manage
EXEC INSERTDETAILGROUPUSERROLE '1','order_new',1
EXEC INSERTDETAILGROUPUSERROLE '1','order_read',1
EXEC INSERTDETAILGROUPUSERROLE '1','orderhistory_updatestatus',1
EXEC INSERTDETAILGROUPUSERROLE '1','orderhistory_printagain',1
EXEC INSERTDETAILGROUPUSERROLE '1','orderhistory_read',1

GO


-- Group Users

go



-- UserAccount
go 
insert into UserAccount(UserName,[Password],FirstName,MiddleName,LastName,FullName,Dob,Email,IdCard,DateCreate,LastUpdate,UpdateBy,UserCreate,IsAdmin,MobilePhone,HomePhone,GroupUserId,EmployerId)
			     values('administrator','bfe96f8a558d7a65fbead98c07b18895',N'Hoàng',N'Minh',N'Nguyễn',N'Nguyễn Minh Hoàng','12/12/2013','hoangsoft35@gmail.com','321319250',GETDATE(),GETDATE(),'','',1,'01229952221','0753875471',1,'')

insert into UserAccount(UserName,[Password],FirstName,MiddleName,LastName,FullName,Dob,Email,IdCard,DateCreate,LastUpdate,UpdateBy,UserCreate,IsAdmin,MobilePhone,HomePhone,GroupUserId,EmployerId)
			     values('admin','bfe96f8a558d7a65fbead98c07b18895',N'Hoàng',N'Minh',N'Nguyễn',N'Nguyễn Minh Hoàng','12/12/2013','hoangsoft35@gmail.com','321319250',GETDATE(),GETDATE(),'','',1,'01229952221','0753875471',1,'')

go
insert into UserAccount(UserName,[Password],FirstName,MiddleName,LastName,FullName,Dob,Email,IdCard,DateCreate,LastUpdate,UpdateBy,UserCreate,IsAdmin,MobilePhone,HomePhone,GroupUserId,EmployerId)
			     values('user','bfe96f8a558d7a65fbead98c07b18895',N'Hoàng',N'Minh',N'Nguyễn',N'Nguyễn Minh Hoàng','12/12/2013','hoangsoft35@gmail.com','321319250',GETDATE(),GETDATE(),'','',0,'01229952221','0753875471',2,'')




--insert role